package com.ruoyi.data.service;

import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.data.domain.DataList;
import com.ruoyi.data.domain.bo.getData.*;
import com.ruoyi.data.domain.vo.DataClassificationVo;
import com.ruoyi.data.domain.vo.DataListVo;

import java.util.List;

/**
 * 获取数据操作
 *
 * @author ruoyi
 * @date 2023-10-26
 */
public interface IGetDataService {


    /**
     * 添加分类
     * @param bo
     */
    Boolean addDataClassification(GetDataClassificationBo bo);


    DataList getOneDataList(GetDataDataListBo bo) throws Exception;

    /**
     * 查询当前分类的数量
     * @param bo
     * @return
     */
    Long getOneDataListCount(GetDataDataListBo bo);

    /**
     * 查询分类数据 分页
     * @param bo
     * @param pageQuery
     * @return
     */
    TableDataInfo<DataList> queryPageList(GetDataDataListBo bo, PageQuery pageQuery);

    /**
     * 删除分类
     * @param bo
     * @return
     */
    Boolean delDataClassification(GetDataClassificationBo bo);


    /**
     * 添加数据
     * @param bo
     * @return
     */
    DataList addAndUpdateDataList(AddDataListBo bo);

    /**
     * 删除数据
     * @param bo
     * @return
     */
    int delDataList(DelDataListBo bo);

    /**
     * 删除分类下所有数据
     * @param bo
     * @return
     */
    int delDataListByClassification(DelDataListBo bo);

    /**
     * 添加数据进入 redis 定时任务调用
     * @return
     */
    boolean addDataListToRedis();

    /**
     * 按字段查询数据
     * @param bo
     * @param pageQuery
     * @return
     */
    List<DataList> getOneDataListPageByFieldData(GetDataDataListBo bo, PageQuery pageQuery);

    /**
     * 需要 是否已读  目标分类名称 现在所属分类 数据主键id （与分类名称二选一 有id执行id 没有执行该分类下所有本人数据）
     * @param bo
     * @return
     */
    boolean batchPaste(BatchPasteBo bo);
}
